package com.gl.glbooks.mobile.events
{
	import com.asfusion.mate.events.Dispatcher;
	import com.gl.glbooks.vos.*;
	
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
	import flash.utils.ByteArray;
	import flash.utils.Dictionary;
	
	import mx.collections.ArrayCollection;
	import mx.core.FlexGlobals;
	
	import spark.components.View;
	import spark.components.ViewNavigator;
	import spark.components.ViewNavigatorApplication;
	
	import views.DetalleView;
	import views.LibrosView;


	public class GLBooksManager extends EventDispatcher
	{
		[Bindable]
		public var usuario:Usuario;
		
		[Bindable]
		public var libros:ArrayCollection;
		
		[Bindable]
		private var dispatcher:IEventDispatcher;
		
		
		
		public function GLBooksManager( dispatcher:IEventDispatcher )
		{
			super();
			this.dispatcher = dispatcher;
		}
		
		private var _libroSeleccionado:Libro;
				
		public function set libroSeleccionado( value:Libro ):void
		{
			if( value != _libroSeleccionado )
			{
				_libroSeleccionado = value;
			}
		}
		
		[Bindable]
		public function get libroSeleccionado():Libro
		{
			return _libroSeleccionado;
		}
		
		private var _navigator:ViewNavigator;
		
		protected function get navigator():ViewNavigator
		{
			if( !_navigator )
				_navigator = ( FlexGlobals.topLevelApplication as ViewNavigatorApplication ).navigator; 
			
			return _navigator;
		}
		
		public function setUsuario(usuario:Usuario):void
		{
			this.usuario=usuario;
		}
		
		public function setLibros(libros:ArrayCollection):void
		{
			this.libros=libros;
		}
	
		
		public function iniciarSesion(usuario:Usuario):void
		{
			if(usuario.estadoAlta)
			{
				setUsuario(usuario);
				navigator.pushView( LibrosView );
			}
		}
		
		public function detalleLibro(libro:Libro):void
		{
			libroSeleccionado=libro;
			
			if( libroSeleccionado.imagen && libroSeleccionado.imagenData == null )
			{
				var event:GLBooksEvent = new GLBooksEvent( GLBooksEvent.BUSCAR_IMAGEN);
				event.libroSeleccionado = libroSeleccionado;
				dispatcher.dispatchEvent( event );
				
			}
			navigator.pushView( DetalleView );
		}

		
		public function setImagenLibro( imagen:ByteArray ):void
		{
			libroSeleccionado.imagenData=imagen;
		}
		
	}
}